package com.baizhi.collectionx;

import java.util.ArrayList;
import java.util.Collection;

/**
 * List集合特点： 有序，元素可重复
 * Set集合特点：  无序，不可重复
 *
 * 集合的很多操作都收到元素的方法的影响，其中影响最多的就是equals方法
 */
public class CollectionDemo2 {
    public static void main(String[] args) {

        Collection c = new ArrayList();
        //Collection c = new HashSet();

//        c.add("a");
//        c.add("b");
//        c.add("a"); //如果是HashSet对象不能存入
//        c.add("b"); //如果是HashSet对象不能存入
//        c.add("z");
//        c.add(1);
//        c.add(new Point(1,2));
//        c.add(3.14);

        /*
           集合中存储引用数据类型，存的是引用数据类型的地址
         */
        c.add(new Point(1,2));
        c.add(new Point(1,2)); //如果是Set，将不可保存
        c.add(new Point(3,5));
        c.add(new Point(6,9));
        c.add(new Point(7,8));
        c.add(new Point(1,12));

        /*
          集合重写了toString方法，输出格式是：
          [元素1.toString(), 元素2.toString(),......]
          因此元素的toString方法会影响集合toString 展现内容
         */
        System.out.println(c);

        Point p = new Point(1,2);
        /*
          boolean  contains(Object o)
          判断当前集合是否包含给定的元素
          集合判断元素是否被包含是依据该元素是否与集合现有元素存在equals方法比较结果为true的情况
          存在则认为包含
         */
        boolean contains = c.contains(p); //true
        System.out.println(contains);

        /*
           boolean remove(Object o)
           将集合中与给定元素equals比较结果为true的元素删除
           对于可以存放重复元素的集合而言，若存在多个equals结果为true的元素则只删除一次
         */
        c.remove(p);
        System.out.println(c);

        c.remove(p);
        System.out.println(c);
    }
}
